import sys
import time

from faker import Faker

'''
作业：
1、编写一个学生方法，产生一堆学生对象（姓名），传入形参控制学生生成数量
'''

# def students(n):
#     faker1 = Faker(locale='zh_cn')
#     for i in range(n):
#         print(faker1.name())
# students(5)
'''
2、创建一个方法，用来生成普通人必备的信息：姓名、年龄、住址、身份证号、手机号，随机生成20个写入personinfo.txt里
格式：姓名：xxx  年龄：xxx 住址：xxx 身份证号：xxx
'''
# def Essential():
#     faker2 = Faker(locale='zh_cn')
#     with open('./personinfo.txt','w',encoding='utf-8') as f:
#         for i in range(20):
#             f.write("姓名：" + faker2.name() +"\n年龄"+str(faker2.random_int(1,99)) + "\n住址:" + faker2.address() + "\n身份证号："+ faker2.ssn() + "\n手机号：" + faker2.phone_number() + "\n\n")
#
# Essential()
'''
3、文本 student.txt中包含下面的内容(字节跳动)
zhangshan:30
lisi:50
wangwu:60
lifei:70
期望能够统计出其中的内容，以dict的形式保存，例如：
{"zhangshan":30,"lisi":50,"wangwu":60,"lifei":70}
'''
# grades_dict = {}
# def bytedance():
#     # 初始化一个空字典
#     with open('./student.txt', 'r', encoding='utf-8') as f:
#         lines = f.readlines()
#         for line in lines:
#             # .strip() 方法用于去除字符串开头和结尾的空格、制表符、换行符等空白字符
#             # split(":")以冒号 ':' 为分隔符，将字符串分割成一个包含多个子字符串的列表。
#             parts = line.strip().split(":")
#             # 将分割后的数据添加到字典中
#             if len(parts) == 2:  # 确保分割结果包含键和值
#                 name = parts[0]
#                 grade = int(parts[1])  # 将成绩转换为整数类型
#                 grades_dict[name] = grade
#     print(grades_dict)
# bytedance()



'''
4、给你一个 非空 整数数组 nums ，除了某个元素只出现一次以外，其余每个元素均出现两次。找出那个只出现了一次的元素。
'''

# nums = [1,567,654321,9,567,1,654321]
# def nums_one():
#     num_sets = set()
#     for num in nums:
#         if num in num_sets:
#             num_sets.remove(num)
#         elif num not in num_sets:
#             num_sets.add(num)
#     return num_sets
# a = nums_one()
# print(a)


'''

5、输入：["1","a","b","3","5","8","_"] 想要提取里面得数字，并保存到一个列表中
'''
# list = ["1","a","b","3","5","8","_"]
# list1 = []
# def list_number():
#     for i in list:
#         if i.isdigit(): #isdigit() 方法检测字符串是否只由数字组成，只对 0 和 正数有效。
#             list1.append(i)
#         else:
#             continue
#     print(list1)
# list_number()

'''
6、写函数,函数接收的4个参数分别是:姓名,性别(默认为男),年龄,地址
用户通过input输入这4个内容(支持持续输入,Q或q退出),并传递给函数
函数接收到这些内容,将其追加到student_msg文件中
重点:复习文件操作
'''

#
# def user_infor():
#     while True:
#         name = input("请输入姓名：")
#         if name == "Q" or name ==  "q":
#             break
#         sex = input("请输入性别：")
#         age = input("请输入年龄：")
#         address = input("请输入地址：")
#         with open("student_msg.txt",'a',encoding='utf-8') as f:
#             f.write(f"姓名为："+name+",性别为："+sex+",年龄为："+age+"，地址为："+address+"\n")
# user_infor()

'''


7、打印功能菜单、添加学生信息、删除学生信息、修改学生信息、显示学生信息、退出系统，并且需要接收用户的输入，在根据输入内容调用相应函数实现相应功能（存入文件），模板图如下。每次对学生管理系统发生改动，要写入改动点到log.txt文本中
'''


# def stu_info():
#     print("====================")
#     print("学生管理系统\n1.添加学生信息\n2.删除学生信息\n3.修改学生信息\n4.显示所有学生信息\n5.退出系统\n")
#     print("====================")
#     try:
#         a = int(input("请输入选项:"))
#     except ValueError:
#         print("请输入有效数字：")
#     if a == 1:
#         add()
#     elif a == 2:
#         delete()
#     elif a == 3:
#         modify()
#     elif a == 4:
#         stu_infomation()
#     elif a == 5:
#         exit()
#
# def add():
#     print("欢迎来到添加学生信息模块")
#     while True:
#         a = input("是否输入内容")
#         if a.upper() != "Q" and a.lower() != "q":
#             name = input("请输入姓名：")
#             sex = input("请输入性别：")
#             age = input("请输入年龄：")
#             address = input("请输入地址：")
#             with open("log.txt", 'a', encoding='utf-8') as f:
#                 f.write(f"姓名为：" + name + ",性别为：" + sex + ",年龄为：" + age + "，地址为：" + address + "\n")
#         else:
#             stu_info()
#
#
# def delete():
#     print("欢迎来到删除学生信息模块")
#     #读取文件内容
#     with open("log.txt", 'r', encoding='utf-8') as f:
#         all_data = f.read()
#         print(all_data)
#         #检查学生姓名是否存在
#         a = input("请输入要删除的学生姓名：")
#         if a in all_data:
#             input_data = input(f"请输入要修改的{a}学生信息")
#             modified_data = all_data.replace(a,input_data)
#             with open("log.txt", 'wt', encoding='utf-8') as f:
#                 f.writelines(modified_data)
#             with open("log.txt", 'r', encoding='utf-8') as f:
#                 print(f.read())
#         else:
#             print("输入不正确，请重新输入！")
#     time.sleep(3)
#     stu_info()
#
#
#
# def modify():
#     print("欢迎来到修改学生信息模块")
#     with open("log.txt", 'r', encoding='utf-8') as f:
#         print(f.read())
#     a = input("请输入要修改的学生姓名：")
#     with open("log.txt", 'r', encoding='utf-8') as f:
#         all_data = f.read()
#         if a in all_data:
#             print(all_data)
#             input_data = input("请输入要修改的学生信息：")
#             modify_data = all_data.replace(a, input_data)
#             with open("log.txt", 'wt', encoding='utf-8') as f:
#                 f.write(modify_data)
#             with open("log.txt", 'r', encoding='utf-8') as f:
#                 print(f.read())
#         else:
#             print("输入不正确，请重新输入！")
#     time.sleep(3)
#     stu_info()
#
#
# def stu_infomation():
#     with open("log.txt", 'r', encoding='utf-8') as f:
#         print(f.read())
#     time.sleep(3)
#     stu_info()
#
# def exit():
#     sys.exit()
#
# stu_info()





'''



8、如今的社交软件层出不穷，虽然功能千变万化，但都具有好友管理系统的基本功能，包括添加好友、删除好友、备注好友、展示好友等。下面是一个简单的好友管理系统的功能菜单（存入文件）

好友管理系统中有5个功能，每个功能都对应一个序号，用户可根据提示“请输入您的选项”选择序号执行相应的操作，包括：

添加好友：用户根据提示“请输入要添加的好友：”输入要添加好友的姓名，添加后会提示“好友添加成功”。

删除好友：用户根据提示“请输入删除好友姓名：”输入要删除好友的姓名，删除后提示“删除成功”。

备注好友：用户根据提示“请输入要修改的好友姓名：”和“请输入修改后的好友姓名：”分别输入修改前和修改后的好友姓名，修改后会提示“备注成功”。

展示好友：若用户还没有添加过好友，提示“好友列表为空”，否则返回每个好友的姓名。

退出：关闭好友管理系统。

本任务要求编写程序，模拟实现如上所述的好友管理系统。

文件读取要使用相对路径，确保在任何的电脑、终端都可以运行

'''

def friend():
    print("====================")
    print("学生管理系统\n1.添加好友\n2.删除好友\n3.备注好友\n4.展示好友显示所有学生信息\n5.退出\n")
    print("====================")
    try:
        a = int(input("请输入您的选项:"))
    except ValueError:
        print("请输入有效数字：")
    if a == 1:
        add_f()
    elif a == 2:
        delete_f()
    elif a == 3:
        modify_f()
    elif a == 4:
        info_f()
    elif a == 5:
        exit_f()
    else:
        exit()


def add_f():
    print("欢迎来到添加好友模块")
    while True:
        a = input("是否输入内容")
        if a.upper() != "Q" and a.lower() != "q":
            name = input("请输入好友昵称：")
            with open("friend.txt", 'a', encoding='utf-8') as f:
                f.write(f"昵称为：" + name+"\n")
                print("好友添加成功!")
        else:
            friend()

def delete_f():
    print("欢迎来到删除好友信息模块")
    #读取文件内容
    with open("friend.txt", 'r', encoding='utf-8') as f:
        all_data = f.read()
        print(all_data)
        a = input("请输入删除好友姓名：")
        if a in all_data:
            modified_data = all_data.replace(a," ")
            with open("friend.txt", 'wt', encoding='utf-8') as f:
                f.writelines(modified_data)
                print("删除成功")
            with open("friend.txt", 'r', encoding='utf-8') as f:
                print(f.read())
        else:
            print("输入不正确，请重新输入！")
    time.sleep(3)
    friend()


def modify_f():
    print("欢迎来到备注好友信息模块")
    # 读取文件内容
    with open("friend.txt", 'r', encoding='utf-8') as f:
        all_data = f.read()
        print(all_data)
        a = input("请输入要修改的好友姓名：")
        if a in all_data:
            input_data = input("请输入修改后的好友姓名：")
            modify_data = all_data.replace(a, input_data)
            with open("friend.txt", 'wt', encoding='utf-8') as f:
                f.writelines(modify_data)
                print("备注成功")
            with open("friend.txt", 'r', encoding='utf-8') as f:
                print(f.read())
        else:
            print("输入不正确，请重新输入！")
    time.sleep(3)
    friend()


def info_f():
    with open("friend.txt", 'r', encoding='utf-8') as f:
        count = f.read()
        if count == '':
            print("好友列表为空")
        else:
            print(count)
    time.sleep(3)
    friend()


def exit_f():
    sys.exit()



friend()